草庐IT

Java BufferedImage 内存消耗

全部标签

c++ - 容器使用的内部类型的内存分配

C++11标准在一般容器要求中有以下几行。(23.2.1-3)Forthecomponentsaffectedbythissubclausethatdeclareanallocator_type,objectsstoredinthesecomponentsshallbeconstructedusingtheallocator_traits::constructfunctionanddestroyedusingtheallocator_traits::destroyfunction(20.6.8.2).Thesefunctionsarecalledonlyforthecontainer’

c++ - 这可能是误报的内存泄漏报告吗?

我正在测试我创建的dll。它又使用其他几个dll。当我启动测试应用程序并退出时,我的Dll测试程序应用程序报告内存泄漏,除了使用LoadLibrary加载dll之外没有执行任何操作。它没有显示我的dll源代码中的确切文件。如果我不加载dll,就没有泄漏。它是一个MFCdll并具有App类。我从dll的应用程序类中删除了所有内容,因此它什么都不做,但在加载它时我仍然收到内存泄漏报告。我创建了另一组虚拟dll和测试应用程序,但没有报告任何泄漏,所以它与我的原始dll有关,也许它与其他dll的链接?我尝试过使用_crtBreakAlloc={allocation_#};技术,但它也不会停止调

c++ - 为什么我无法在 for 循环中访问动态分配的内存?

我为从基类instrument继承的子类类型stock新建了一个内存,当我尝试访问我的数组的第二个元素时,它抛出错误。当我的新数组大小为1时一切正常#include#include#includeusingnamespacestd;classInstrument{public:virtualvoiddisplay(){}virtualvoidoutput(){}virtualvoidreadFile(){}virtual~Instrument(){}};classStock:publicInstrument{public:Stock(){}virtualvoidinput(){cout

c++ - 编写内存安全的 C++ 应用程序需要什么?

是否有可能创建一个编码标准或使用一个库来证明可以消除C++中的任何内存管理错误?我正在考虑类似Java的东西,例如在Java应用程序中不可能有悬挂指针。 最佳答案 IsitpossibletoeithercreateacodingstandardoruseofalibrarythatcanbeprovedtoeliminateanymemorymanagementerrorsinC++?是也不是。即使您使用非常严格的标准,这样做也会将您限制在非常狭窄的C++语言子集中。例如,PowerofTen(RulesforDeveloping

c++ - 初始化原子指针是原子的吗?如果初始化或内存分配抛出会发生什么?

如果我一次性声明并定义一个原子指针,比如-std::atomiciptr=newint(1);std::atomiciptr=newT();据我了解,整个操作不是原子的。newT()涉及分配内存,构造T对象,然后自动分配给iptr。T可能很容易构造,在这种情况下,构造T不应抛出异常,但某些用户定义的T可能会抛出异常。如果在T构造或内存分配之间某个其他线程使用iptr怎么办?这个操作真的是原子的吗?使其成为原子的一种方法是打破声明和定义,例如T*temp=newT();std::atomiciptr=temp;有没有其他方法可以原子地做同样的事情?我的理解有问题吗?

c++ - 在 64 位系统的低地址分配内存的最可靠/可移植的方法是什么?

我需要分配位于前32GB虚拟地址空间内的大内存块(供我的自定义分配器使用)。我想,如果我需要,比方说,1MBblock,我可以使用mmap和MAP_FIXED_NOREPLACE(或VirtualAlloc)从低地址开始以递增的方式进行迭代,比如说,1MB,直到调用成功。从上一个成功的block继续下一个block。这听起来很笨拙,但至少它对操作系统地址空间布局变化和ASLR算法变化有一定的鲁棒性。根据我对当前操作系统布局的理解,前32GB应该有足够的可用内存,但也许我遗漏了什么?在Windows、Linux、OSX、iOS或Android中有什么东西可以击败这个方案吗?有没有更好的办

c++ - 在 C/C++ 中的特定地址边界上对齐内存是否仍能提高 x86 性能?

许多低延迟开发指南讨论了在特定地址边界上对齐内存分配:https://github.com/real-logic/simple-binary-encoding/wiki/Design-Principles#word-aligned-accesshttp://www.alexonlinux.com/aligned-vs-unaligned-memory-access但是,第二个链接是2008年的。在地址边界上对齐内存是否仍然在2019年为IntelCPU提供性能提升?我认为英特尔CPU不再会因访问未对齐的地址而导致延迟损失?如果不是,在什么情况下应该这样做?我应该对齐每个堆栈变量吗?类成

c++ - 实例化 C++ 类时内存中会发生什么

我对C++的具体细节很感兴趣,我想知道当一个对象被实例化时究竟发生了什么变化。如果函数随后被添加到内存中,它们是否在运行时存在,或者它们是否根本没有存储在内存中,我特别感兴趣。如果有人可以指导我访问一个关于C和C++的一些核心bolt的好网站,我也很乐意。谢谢,乔 最佳答案 不确定一个好的网站,但是InsideTheC++ObjectModel是一本很好的书。至少在通常情况下,成员函数的存在完全独立于类的任何实例。相反,类的实例是包含对象的(非静态)数据成员的结构。如果该类至少有一个虚函数,则该对象还将包含一个指向vtable的指针

c++ - 内存管理和 std::allocator

在检查我的代码时,我看到我使用了一些“丑陋”的结构,在一个类(称为“map”)中我有一个包含“数据”类的vector:std::vectorvector;其中PointerToHUGEClass就像名称描述的那样。(尽管指向的对象也属于map类,并在构造函数中使用“new”参数创建)。这一切都很好(目前)。不过,我仍然觉得它更像是一种解决方法。我使用“PointerToHUGEClass”而不仅仅是“HUGEClass”的唯一原因是因为我想确保对象不是从堆栈中声明的。然而,这是在我了解分配器之前完成的。现在我觉得分配器的任务或多或少是确保内存不是从堆栈中声明的。我的问题:我假设分配器负

c++ - Visual C++ 运行时 malloc/free 会将内存返回给操作系统吗?

问题与Willmallocimplementationsreturnfree-edmemorybacktothesystem?非常相似,但我对Windows/MicrosoftVisualStudio的答案以及有关确切虚拟内存状态的详细信息感兴趣。请问VisualC++CRTfree将内存还给系统?关于虚拟内存分配,内存的确切状态是什么?对一个大内存块做free之后,block中的内存是committed,reserved,还是free?如果我调用_heapmin怎么办?免费后? 最佳答案 查看2010的源码,可以看到malloc/